package co.com.smart.utilidades;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

public class Utilidades {

	
	/**
	 * Valida si la cadena esta nula,vacia o con es espacio si y solo si tiene este
	 * @author afescobar
	 * <br><b>Fecha de desarrollo : </b> 06/08/2015
	 * <br><b>Fecha de modificacion : </b> 06/08/2015
	 * @param text
	 * @param replace
	 * @return
	 */
	public static String NVL(String text,String replace){
		
		if (text == null){
			return replace;
		}
		
		if(text.isEmpty()){
			return replace;
		}
		
		if("".equals(text)){
			return replace;
		}
		
		if("".equals(text.trim())){
			return replace;
		}
		
		return text;
	}
	
	public static <T> String ArrayToString(List<T> lista){
		StringBuilder string = new StringBuilder("");
		int i = 0;
		for (T cadena : lista)
		{
			string.append(cadena.toString());			
			i++;
			if (i < lista.size())
			{
				string.append(",");
			}			
		}

		return string.toString();
	}

	public static <T> String ArrayToVarchar(List<T> lista){
		StringBuilder string = new StringBuilder("");
		int i = 0;
		for (T cadena : lista)
		{
			string.append("'"+cadena.toString()+"'");			
			i++;
			if (i < lista.size())
			{
				string.append(",");
			}			
		}

		return string.toString();
	}

	/**
	 * Corta la cadena a la longitud recibida
	 * @author afescobar
	 * @param value cadena de texto a evaluar
	 * @param length longitud maxima
	 * @return
	 */
	public static String truncate(String value, int length)
	{
		if (value != null && value.length() > length)
			value = value.substring(0, length);
		return value;
	}
	
	
	/**
	 * Convierte un InputStream en StringBuffer
	 * @author afescobar
	 * @param in
	 * @return StringBuffer
	 * @throws IOException
	 */
	public static StringBuffer fromStream(InputStream in) throws IOException
	{
	    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
	    StringBuffer out = new StringBuffer();
	    String line;
	    while ((line = reader.readLine()) != null) {
	        out.append(line);
	    }
	    return out;
	}
	
	public static Boolean containText(String cadena, String find){
		boolean exist = Boolean.FALSE;
		
		if (cadena == null || find  == null){
			return Boolean.FALSE;
		}
		
		exist = cadena.contains(find);
		
		return exist;
	}
	
	/**
	 * formateo de fecha
	 * @author afescobar
	 * @param format
	 * @param fecha
	 * @return
	 */
	public static String formatDateString(String format,Date fecha){
		SimpleDateFormat formatoFecha = new SimpleDateFormat(format);
       	return formatoFecha.format(fecha);	
	}
	
}
